package com.alks.function.mapper;

import com.alks.entity.data.entity.PcLotExp2;
import com.alks.entity.data.entity.PcLotUsageChg;
import com.alks.entity.data.entity.PcLotUsageFitChg;
import com.alks.function.data.dto.PcLotExp2Dto;
import com.alks.function.data.dto.PcLotExpDto;
import com.alks.function.data.dto.PcLotUsageChgDto;
import com.alks.function.data.dto.PcLotUsageFitChgDto;
import com.alks.function.data.request.PcLotExp2Request;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.mapstruct.Mapper;

import java.util.List;

@Mapper
public interface PcLotExp2Mapper {

    /**
     * 选择版本
     * @param request
     * @return
     */
    List<PcLotExp2Dto> getSelectVersion(PcLotExp2Request request);

    /**
     * 指令用量差异
     *
     * @param lotNo     指令
     * @param version   版本
     * @param companyId
     * @return
     */
    List<PcLotUsageChgDto> getUsageDifference(@Param("lotNo") String lotNo, @Param("version") Integer version, @Param("companyId") String companyId);

    /**
     * 子材料用量差异
     *
     * @param mtlNo     料号
     * @param version   版本
     * @param seqNo     序号
     * @param companyId
     * @return
     */
    List<PcLotUsageFitChgDto> getWheelMaterialUsageVariance(@Param("mtlNo") String mtlNo,
                                                            @Param("version") Integer version,
                                                            @Param("seqNo") Integer seqNo,
                                                            @Param("companyId") String companyId,
                                                            @Param("lotNo") String lotNo);

    /**
     * 指令用量差异计算返回型体颜色
     *
     * @param lotNo
     * @param companyId
     * @return
     */
    PcLotExpDto getStyle2Color(@Param("lotNo") String lotNo,@Param("companyId") String companyId);

    /**
     * 指令用量差异计算返回变更原因
     * @return
     */
    List<String> getRemark(@Param("companyId") String companyId);

    /**
     * 指令用量差异计算返回型体
     * @return
     */
    List<String> getStyle(@Param("companyId") String companyId);

    /**
     * 查询是否写入日志
     * @param lotNo
     * @param companyId
     * @return
     */
    @Select("select count(0) from PC_LOT_EXP2 where LOT_NO=#{lotNo} and COMPANY_ID=#{companyId}")
    Integer getLotNoExist(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 新增指令更改版本
     * @param pcLotExp2
     * @return
     */
    int addPcLotExp2(PcLotExp2 pcLotExp2);

    /**
     *
     * 查询指令版本变更信息
     * @param lotNo
     * @param companyId
     * @param version
     * @return
     */
    List<PcLotUsageChg> getPcLotUsageChgList(@Param("lotNo") String lotNo, @Param("companyId") String companyId, @Param("version") Integer version);

    /**
     * 查询子材料版本变更信息
     * @param lotNo
     * @param companyId
     * @param version
     * @return
     */
    List<PcLotUsageFitChg> getPcLotUsageFitChgList(@Param("lotNo") String lotNo, @Param("companyId") String companyId, @Param("version") Integer version);

    /**
     * 更新指令版本变更信息
     * @param usageChgList
     * @return
     */
    int updatePcLotUsageChgList(@Param("usageChgList") List<PcLotUsageChg> usageChgList);

    /**
     * 更新子材料版本变更信息
     * @param lotUsageFitList
     * @return
     */
    int updatePcLotUsageFitChgList(@Param("lotUsageFitList") List<PcLotUsageFitChg> lotUsageFitList);

    /**
     * 根据指令查询版本信息
     * @param lotNo
     * @return
     */
    List<PcLotExp2Dto>  getSelectVersionList(@Param("lotNo") String lotNo);

}
